<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // var arr = [1 , [2,3] , 4] ;

        // var arr2     arr和arr2中的第二个值(也是一个数组) 地址共享


        // 二维数组的深复制
        //   需要把二维数组在进行一个深复制然后push到新数组中


        // var arr2 = [] ;

        // for(var i in arr) {
        //     // arr2.push(arr[i]) ;   
        //     // 先判断数组中的值是不是数组
        //     if(Array.isArray(arr[i])) {
        //         var arr3 = [] ;
        //         // arr[i]是数组
        //         for(var j in arr[i]) {   // 二维
        //             arr3.push(arr[i][j]) ;
        //         }
        //         // 把arr3 放到arr2
        //         arr2.push(arr3) ;
        //     } else {
        //         arr2.push(arr[i]) ;
        //     }
        // }


        function deepCopy(arr) {
            // 定义一个新的数组
            var resArr = [] ;
            // 遍历数组
            for(var i in arr) {
                // 判断是不是数组
                if(Array.isArray(arr[i])) {
                    // 如果是数组就再调用函数自己(也就是声明新数组，然后遍历实现深复制)
                    var arr2 = deepCopy(arr[i]) ;  
                    resArr.push(arr2) ;
                } else {
                    resArr.push(arr[i]) ;
                }

                // Array.isArray(arr[i]) ? resArr.push(deepCopy(arr[i])) : resArr.push(arr[i])
            }
            return resArr ;
        }


        var arr = [1 , [2, [3] ] , 4] ;

        var res = deepCopy(arr) ;
        console.log(res);


        // 1  push  res 
        // [2 , [3]]  
        //   2   res1
        //   [3]  重新调用函数
        //      res2



        // 思考?    typeof obj[key] === 'object'
        // var obj = {
        //     name : 'cc' ,
        //     age : 18 ,
        //     say : {
        //         language : 'en' , 
        //         speak :'hello'
        //     }
        // }
        

    </script>
    
</body>
</html>